package com.nccs.arithmetic;

/**
 * @author xuzengsheng
 * @program nssc-parent
 * @createTime 2021-09-14- 15:46:00
 * @description 插入排序
 * 来源：https://blog.csdn.net/alan_liuyue/article/details/80740960
 */

public class InsertSort extends AbstractSortHandler {

    public InsertSort(String arithmeticName) {
        super(arithmeticName);
    }

    public static void main(String[] args) {
        new InsertSort("插入排序").execute();
    }

    @Override
    public void sort(int[] arry) {
        for (int i = 1; i < arry.length; i++) { //假设第一个数位置时正确的；要往后移，必须要假设第一个。

            int j = i;
            int target = arry[i]; //待插入的

            //后移
            while (j > 0 && target < arry[j - 1]) {
                arry[j] = arry[j - 1];
                j--;
            }
            //插入
            arry[j] = target;
        }
    }
}
